#! /bin/sh
# PCP QA Test No. 156
# check out sample PMDA
# - see qa/1339 for the Internet socket connection cases
#
# Copyright (c) 1995-2002 Silicon Graphics, Inc.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard filters
. ./common.product
. ./common.filter
. ./common.check

_filter()
{
    _filter_pmda_install \
    | _filter_compiler_babble \
    | sed \
	-e 's/ 1[34][0-9][0-9] values/ 1300+ values/' \
	-e 's/ 1[0-9] warnings/ 10+ warnings/' \
	-e 's/ [12][0-9][0-9] metrics/ 100+ metrics/' \
	-e "s;$tmp;TMP;" \
	-e "s/$port1/PORT1/" \
	-e "s/$port2/PORT2/" \
    # end
}

_check_pmda_gone()
{
    sleep 2
    pminfo -v $1 && echo "Error: pminfo -v found some \"$1\" metrics"
    # PMDA process may be a zombie because pmcd has not yet harvested
    # it ... in this case, name will appear as [pmda$1] or (pmda$1)
    # so skip these ones
    #
    $PCP_PS_PROG $PCP_PS_ALL_FLAGS | grep "[^([][p]mda$1[^])]" >$tmp.tmp
    if [ -s $tmp.tmp ]
    then
	echo "Error: some \"$1\" PMDAs still present"
	cat $tmp.tmp
    fi
    rm -f $tmp.tmp
}

_snag_log()
{
    if [ -f "$PCP_LOG_DIR/pmcd/sample.log" ]
    then
	cat "$PCP_LOG_DIR/pmcd/sample.log" >>$seq_full
    else
	echo "$PCP_LOG_DIR/pmcd/sample.log: missing?"
    fi
}

status=1


# save pmcd.conf and restore it after the test
cp $PCP_PMCDCONF_PATH $tmp.pmcd.conf

home=$PCP_PMDAS_DIR
iam=sample
if [ ! -d $home/$iam ]
then
    echo "Where is $home/$iam?"
    exit 1
fi
cd $home/$iam
unset ROOT MAKEFLAGS

# force dynamic.indom to be what we expect ...
#
echo "1 one" >$tmp.indom
echo "2 two" >>$tmp.indom
$sudo cp $tmp.indom dynamic.indom

# make sure sample agent is running again at the end, so other QA tests
# continue to work
#
trap "echo; echo 'Reinstall PMDA ...'; $sudo ./Install </dev/null >$tmp.out; _filter <$tmp.out; $sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH; $sudo rm -f $tmp.*; exit \$status" 0 1 2 3 15

# real QA test starts here

echo
echo "=== remove agent ==="
$sudo ./Remove >$tmp.out 2>&1
cat $tmp.out
_check_pmda_gone $iam

echo
echo "=== pipe agent ===" | tee -a $seq_full
echo pipe | $sudo ./Install -e >$tmp.out 2>&1
_filter <$tmp.out
pminfo -v sample || echo "... failed!"
_snag_log
echo pipe | $sudo ./Install -e >$tmp.out 2>&1
_filter <$tmp.out
pminfo -v sample || echo "... failed!"
_snag_log

echo | tee -a $seq_full
echo "=== socket Unix agent ===" | tee -a $seq_full
echo 'socket
Unix
'"$tmp.fifo" | $sudo ./Install -e >$tmp.out 2>&1
_filter <$tmp.out
pminfo -v sample || echo "... failed!"
_snag_log
echo 'socket
Unix
'"$tmp.fifo" | $sudo ./Install -e >$tmp.out 2>&1
_filter <$tmp.out
pminfo -v sample || echo "... failed!"
_snag_log

$sudo ./Remove >$tmp.out 2>&1
cat $tmp.out
_check_pmda_gone $iam

status=0
exit
